#include "type.h"
#include "const.h"
#include "string.h"

/*----------------------------------------------------
函数名：int vsprintf(char *buf, const char *fmt, va_list args)
作用：  printf 函数的内部实现
------------------------------------------------------*/
int vsprintf(char *buf, const char *fmt, va_list args)
{
    char* p;
    char tmp[256];
    va_list p_next_arg = args;

    for (p = buf; *fmt; fmt++) {
        if (*fmt != '%') {  // 要输出的整个字符串中包含的格式控制 %x
            *p++ = *fmt;
            continue;
        }

        fmt++;  // fmt == '%' 后 ++， 指向

        switch(*fmt) {
        case 'x':   // 将整数以十六进制输出
            itoa(tmp, *((int*)p_next_arg));
            strcpy(p, tmp);
            p_next_arg += 4;
            p += strlen(tmp);
            break;
        default:
            break;
        }
    }

    return (p - buf);
}